class ProductsController < ApplicationController
  # GET /products
  # GET /products.xml
  def index
    @products = Product.find(:all)
    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @products }
    end
  end

  # GET /products/1
  # GET /products/1.xml
  def show
    @product = Product.find(params[:id])
    respond_to do |format|
      format.html # show.html.erb
      format.xml  { render :xml => @product }
    end
  end

  # GET /products/new
  # GET /products/new.xml
  def new
    @product = Product.new
    @product_categories = ProductCategory.find(:all)
    respond_to do |format|
      format.html # new.html.erb
      format.xml  { render :xml => @product }
    end
  end

  # GET /products/1/edit
  def edit
    @product = Product.find(params[:id])
    @product_categories = ProductCategory.find(:all)
  end

  # POST /products
  # POST /products.xml
  def create
    @product = Product.new(params[:product])
    @product.user = current_user
    @product_categories = ProductCategory.find(:all)
    respond_to do |format|
      begin
	Product.transaction do
	  @product.save!
	  flash[:notice] = 'Product was successfully created.'
	  format.html { redirect_to(@product) }
	  format.xml  { render :xml => @product, :status => :created, :location => @product }
	end
      rescue ActiveRecord::RecordInvalid
	format.html { render :action => "new" }
	format.xml  { render :xml => @product.errors, :status => :unprocessable_entity }
      end
    end    
  end

  # PUT /products/1
  # PUT /products/1.xml
  def update
    @product = Product.find(params[:id])
    @product_categories = ProductCategory.find(:all)
    respond_to do |format|
      begin
	Product.transaction do
	  @product.update_attributes!(params[:product])
	  flash[:notice] = 'Product was successfully updated.'
	  format.html { redirect_to(@product) }
	  format.xml  { head :ok }
	end
      rescue ActiveRecord::RecordInvalid
        format.html { render :action => "edit" }
        format.xml  { render :xml => @product.errors, :status => :unprocessable_entity }
      end
    end
  end


  # DELETE /products/1
  # DELETE /products/1.xml
  def destroy
    @product = Product.find(params[:id])
    @product.destroy
    respond_to do |format|
      format.html { redirect_to(products_url) }
      format.xml  { head :ok }
    end
  end
  
  def comment
    product = Product.find(params[:id])
    comment = product.product_comments.create(params[:product_comment])
    flash[:notice] = "Comment can't be blank" unless comment.valid?
    redirect_to :action => :show, :id => params[:id]
  end
end
